#ifndef _I386_PGALLOC_2LEVEL_H
#define _I386_PGALLOC_2LEVEL_H

/*
 * traditional i386 two-level paging, page table allocation routines:
 */

extern __inline__ pmd_t *get_pmd_fast(void)
{
	return (pmd_t *)0;
}

extern __inline__ void free_pmd_fast(pmd_t *pmd) { }
extern __inline__ void free_pmd_slow(pmd_t *pmd) { }

/**
 * 在i386中，根据是否开启PAE，分为两级映射还是三级映射，这里是两级映射
 * 两级映射中，gmd中间目录表就是多余的，但为了层次结构不变，所以就保留。
 * 但在实际中，由于两级映射的pgd表中的表项已经指向了具体的页面表，所以实现的方式是pmd和pgd的值是一样的。
 * 【注：本来应该是pmd指向具体的页面表】
*/
extern inline pmd_t * pmd_alloc(pgd_t *pgd, unsigned long address)
{
	if (!pgd)
		BUG();
	return (pmd_t *) pgd;
}

#endif /* _I386_PGALLOC_2LEVEL_H */
